package com.enums.menu;

import com.onjava.Enums;

/**
 * @author ANG.YU
 * 每⼀个 Course 的实例都将其对应的 Class 对象作为构造器的参数。通过
 * getEnumConstants0 ⽅法，可以从该 Class 对象中取得某个 Food ⼦类的
 * 所有 enum 实例。这些实例在 randomSelection() 中被⽤到。因此，通过
 * 从每⼀个 Course 实例中随机地选择⼀个 Food，我们便能够⽣成⼀份菜
 * 单：
 */
@SuppressWarnings("all")
public enum Course {
    APPETIZER(Food.Appetizer.class),
    MAINCOURSE(Food.MainCourse.class),
    DESSERT(Food.Dessert.class),
    COFFEE(Food.Coffee.class);
    private Food[] values;

    private Course(Class<? extends Food> kind) {
        values = kind.getEnumConstants();
    }

    public Food randomSelection() {
        return Enums.random(values);
    }
}
